import axios from 'axios' // 导入axios
import store from '@/store'
import jsonBig from 'json-bigint'

const request = axios.create({
  baseURL: 'http://geek.itheima.net', // 基础路径
  // transformResponse 允许自定义原始的响应数据（字符串）
  transformResponse: [function (data) {
    try {
      // 如果转换成功则返回转换的数据结果
      return jsonBig.parse(data)
    } catch (err) {
      // 如果转换失败，则包装为统一数据格式并返回
      return {
        data
      }
    }
  }]
})

// 请求拦截器
// 添加请求拦截器
request.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  const { user } = store.state
  if (user && user.token) {
    config.headers.Authorization = `Bearer ${user.token}`
  }
  // 注意：这里必须返回 config 配置对象 否则请求暂停在这里
  return config
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error)
})

// 响应拦截器
// request.interceptors.response.use(function (response) {
//   // 2xx 范围内的状态码都会触发该函数。
//   // 对响应数据做点什么
//   return response
// }, async function (error) {
//   if (error.request.status === 401) {
//     try {
//       const res = await axios({
//         url: 'http://toutiao.itheima.net/v1_0/authorizations',
//         method: 'PUT',
//         headers: {
//           Authorization: `Bearer ${store.state.user.refresh_token}`
//         }
//       })
//       store.commit('setUser', { token: res.data.data.token, refresh_token: store.state.user.refresh_token })
//       return request(error.config)
//     } catch (err) {
//       return console.log(err, '发送失败')
//     }
//   }
//   return Promise.reject(error)
// })

export default request
